import { DEFAULT_SHARE_TITLE, DEFAULT_SHARE_PATH } from '../../config/wordList'

// 默认分享信息
const defaultShareInfo = {
  path: appendInviteId(DEFAULT_SHARE_PATH),
  title: DEFAULT_SHARE_TITLE
}

// 追加邀请人Id 参数: path(页面路径)
function appendInviteId (path) {
  const app = getApp()
  const inviteId = app?.globalData?.userInfo?.inviteId ?? ''
  // 路径是否包含inviteId 包含就返回路径
  if (path.includes('inviteId')) {
    return path
    // 路径不包含inviteId 则追加
  } else {
    return path.includes('?') ? `${path}&inviteId=${inviteId}` : `${path}?inviteId=${inviteId}`
  }
}

const setShareInfo = config => {
  // 重写onShareAppMessage方法
  const originalShareMethod = config.onShareAppMessage
  config.onShareAppMessage = function (e) {
    // 配置对象有onShareAppMessage方法
    if (originalShareMethod) {
      // 配置对象实际返回的分享信息
      const returnVal = originalShareMethod?.call(this, e)
      // 如果有返回信息
      if (returnVal) {
        // 页面的分享信息没有邀请人id 则追加
        returnVal.path = appendInviteId(returnVal.path)
        return returnVal
        // 如果页面对象没有返回信息
      } else {
        return defaultShareInfo
      }
      // 配置对象没有onShareAppMessage方法 直接返回默认的分享信息
    } else {
      return defaultShareInfo
    }
  }
  return config
}

export default setShareInfo
